package com.lin.pay.wx.service;

import com.lin.common.error.CustomRuntimeException;
import com.lin.pay.wx.vo.OpenidResult;

import java.math.BigDecimal;
import java.util.Map;

public interface WxService {

    Map pay(String openid, BigDecimal trxAmt, Long orderNo, Long payOrderNo) throws CustomRuntimeException;
    /**
     * 通过code获取OPENID.
     *
     * @param code 微信code.
     * @return openid.
     */
    OpenidResult getOpenId(String code);

    /**
     * 获取基础支持的access_token，不是通过code获取的access_token
     * @return 基础支持的access_token
     */
    String getAccessToken();

    /**
     * 先在redis中获取ticket（超时 7000秒），如果没有，这从微信中获取.
     * @return ticket.
     * @throws CustomRuntimeException
     */
    String getTicket() throws CustomRuntimeException;

    /**
     * 对字符串进行sha1签名
     * @param signStr  例如：jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=1414587457&url=http://mp.weixin.qq.com?params=value .
     * @return 十六进制的签名字符串
     */
    String sha1sign(String signStr) throws CustomRuntimeException;
}
